package com.zzz.system.service.sysUser;

import com.zzz.common.core.domain.R;
import com.zzz.system.domain.systemUser.dto.SysUserSaveDTO;
import com.zzz.system.domain.systemUser.SystemUser;
import com.zzz.system.domain.systemUser.vo.LoginUserVo;
import com.zzz.system.domain.systemUser.vo.SysUserVo;
import com.zzz.system.domain.user.dto.UserQueryDTO;
import com.zzz.system.domain.user.vo.UserVO;

import java.util.List;

/**
 * @BelongsProject: oj-project
 * @BelongsPackage: com.zzz.system.service
 * @Author: zhai
 * @CreateTime: 2025-09-21  17:19
 * @Description: TODO
 * @Version: 1.0
 */
public interface SysUserService {
    /**
     * @description: 登录
     * @author: zhai
     * @date: 2025/9/22 12:47
     * @param: [userAccount, password]
     * @return: com.zzz.conmmon.core.domain.R<java.lang.String>
     **/
    R<String> login(String userAccount, String password);
    /**
     * @description: 添加
     * @author: zhai
     * @date: 2025/9/22 12:47
     * @param: [sysUserSaveDTO]
     * @return: com.zzz.conmmon.core.domain.R<java.lang.Void>
     **/
    int add(SysUserSaveDTO sysUserSaveDTO);
    /**
     * @description: 获取管理员的信息
     * @author: zhai
     * @date: 2025/10/14 16:47
     * @param: [token]
     * @return: com.zzz.common.core.domain.R<com.zzz.system.domain.systemUser.vo.LoginUserVo>
     **/
    R<LoginUserVo> info(String token);
    /**
     * @description: 根据ID删除
     * @author: zhai
     * @date: 2025/9/22 16:14
     * @param: [userId]
     * @return: com.zzz.conmmon.core.domain.R<java.lang.Void>
     **/
    int delete(Long userId);
    /**
     * @description: 获取管理员信息
     * @author: zhai
     * @date: 2025/9/22 16:14
     * @param: [userId]
     * @return: com.zzz.conmmon.core.domain.R<com.zzz.system.domain.systemUser.SystemUser>
     **/
    R<SysUserVo> detail(Long userId);
    /**
     * @description: 修改管理员信息
     * @author: zhai
     * @date: 2025/9/22 16:15
     * @param: [systemUser]
     * @return: com.zzz.conmmon.core.domain.R<com.zzz.system.domain.systemUser.SystemUser>
     **/
    R<SystemUser> update(SystemUser systemUser);
    /**
     * @description: 登出
     * @author: zhai
     * @date: 2025/10/15 13:55
     * @param: [token]
     * @return: com.zzz.common.core.domain.R<java.lang.Void>
     **/
    R<Void> logout(String token);
}
